home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / KEYBOARD.SWG / 0058_Nice Keyboard unit.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-26  |  13KB  |  487 lines

  1.  
  2. Unit keybx;
  3.  
  4.  interface
  5.  
  6.  uses errors;
  7.  
  8.  
  9.  const     Right_shift     = $0001;
  10.            Left_shift      = $0002;
  11.            Ctrl            = $0004;
  12.            Alt             = $0008;
  13.            Scroll_locked   = $0010;
  14.            Num_locked      = $0020;
  15.            Caps_locked     = $0040;
  16.            Insert_locked   = $0080;
  17.  
  18.            Right_ctrl      = $0100;
  19.            left_alt        = $0200;
  20.            sysreq          = $0400;
  21.            Pause_locked    = $0800;
  22.            Scroll_pressed  = $1000;
  23.            Num_pressed     = $2000;
  24.            Caps_pressed    = $4000;
  25.            Ins_pressed     = $8000;
  26.  
  27.            Space           = $3920;
  28.  
  29.            Enter           = $1C0D;
  30.            Ctrl_Enter      = $1C0A;
  31.            Shift_Enter     = $1C0D;
  32.            Alt_Enter       = $1C00;
  33.  
  34.            gray_Enter      = $E00D;
  35.            Ctrl_Gray_Enter = $E00A;
  36.            Shift_Gray_Enter= $E00D;
  37.            Alt_Gray_Enter  = $A600;
  38.  
  39.            gray_Plus       = $4E2B;
  40.            Ctrl_gray_plus  = $9000;
  41.            Shift_gray_plus = $4E2B;
  42.            alt_gray_plus   = $4E00;
  43.  
  44.            gray_Minus      = $4A2D;
  45.            Ctrl_gray_minus = $8E00;
  46.            Shift_gray_minus= $4A2D;
  47.            alt_gray_minus  = $4A00;
  48.  
  49.            _Esc            = $011B;
  50.            Ctrl_Esc        = $011B;
  51.            Shift_Esc       = $011B;
  52.            Alt_Esc         = $0100;
  53.  
  54.            Backspace       = $0E08;
  55.            Ctrl_Backspace  = $0E7F;
  56.            Shift_Backspace = $0E08;
  57.            Alt_Backspace   = $0E00;
  58.  
  59.  
  60.            _Tab            = $0F09;
  61.            Ctrl_Tab        = $9400;
  62.            Shift_Tab       = $0F00;
  63.            Alt_Tab         = $A500;
  64.  
  65.            _Up             = $4800;
  66.            _Down           = $5000;
  67.            _Left           = $4B00;
  68.            _Right          = $4D00;
  69.            _Home           = $4700;
  70.            _End            = $4F00;
  71.            _PgUp           = $4900;
  72.            _PgDn           = $5100;
  73.            _Five           = $4C00;
  74.            _Ins            = $5200;
  75.            _del            = $5300;
  76.  
  77.            Ctrl_Up         = $8D00;
  78.            Ctrl_Down       = $9100;
  79.            Ctrl_Left       = $7300;
  80.            Ctrl_Right      = $7400;
  81.            Ctrl_Home       = $7700;
  82.            Ctrl_End        = $7500;
  83.            Ctrl_PgUp       = $8400;
  84.            Ctrl_PgDn       = $7600;
  85.            Ctrl_Five       = $8F00;
  86.            Ctrl_Del        = $9300;
  87.            Ctrl_Ins        = $9200;
  88.  
  89.  
  90.            shift_Up        = $4838;
  91.            shift_Down      = $5032;
  92.            shift_Left      = $4B34;
  93.            shift_Right     = $4D36;
  94.            shift_Home      = $4737;
  95.            shift_End       = $4F31;
  96.            shift_PgUp      = $4939;
  97.            shift_PgDn      = $5133;
  98.            shift_Five      = $4C35;
  99.            shift_ins       = $5230;
  100.            shift_del       = $532E;
  101.  
  102.            gray_Up         = $48E0;
  103.            gray_Down       = $50E0;
  104.            gray_Left       = $4BE0;
  105.            gray_Right      = $4DE0;
  106.            gray_Home       = $47E0;
  107.            gray_End        = $4FE0;
  108.            gray_PgUp       = $49E0;
  109.            gray_PgDn       = $51E0;
  110.            gray_ins        = $52E0;
  111.            gray_del        = $53E0;
  112.  
  113.            Ctrl_gray_Up    = $8DE0;
  114.            Ctrl_gray_Down  = $91E0;
  115.            Ctrl_gray_Left  = $73E0;
  116.            Ctrl_gray_Right = $74E0;
  117.            Ctrl_gray_Home  = $77E0;
  118.            Ctrl_gray_End   = $75E0;
  119.            Ctrl_gray_PgUp  = $84E0;
  120.            Ctrl_gray_PgDn  = $76E0;
  121.            Ctrl_Gray_Ins   = $92E0;
  122.            Ctrl_Gray_del   = $93E0;
  123.  
  124.            shift_gray_Up   = $48E0;
  125.            shift_gray_Down = $50E0;
  126.            shift_gray_Left = $4BE0;
  127.            shift_gray_Right= $4DE0;
  128.            shift_gray_Home = $47E0;
  129.            shift_gray_End  = $4FE0;
  130.            shift_gray_PgUp = $49E0;
  131.            shift_gray_PgDn = $51E0;
  132.            Shift_gray_Ins  = $52E0;
  133.            Shift_gray_del  = $53E0;
  134.  
  135.            Alt_gray_Up     = $9800;
  136.            Alt_gray_Down   = $A000;
  137.            Alt_gray_Left   = $9B00;
  138.            Alt_gray_Right  = $9D00;
  139.            Alt_gray_Home   = $9700;
  140.            Alt_gray_End    = $9F00;
  141.            Alt_gray_PgUp   = $9900;
  142.            Alt_gray_PgDn   = $A100;
  143.            Alt_gray_Ins    = $A200;
  144.            Alt_gray_del    = $A300;
  145.  
  146.            _f1             = $3B00;
  147.            _f2             = $3C00;
  148.            _f3             = $3D00;
  149.            _f4             = $3E00;
  150.            _f5             = $3F00;
  151.            _f6             = $4000;
  152.            _f7             = $4100;
  153.            _f8             = $4200;
  154.            _f9             = $4300;
  155.            _f10            = $4400;
  156.            _f11            = $8500;
  157.            _f12            = $8600;
  158.  
  159.            Shift_f1        = $5400;
  160.            Shift_f2        = $5500;
  161.            Shift_f3        = $5600;
  162.            Shift_f4        = $5700;
  163.            Shift_f5        = $5800;
  164.            Shift_f6        = $5900;
  165.            Shift_f7        = $5A00;
  166.            Shift_f8        = $5B00;
  167.            Shift_f9        = $5C00;
  168.            Shift_f10       = $5D00;
  169.            Shift_f11       = $8700;
  170.            Shift_f12       = $8800;
  171.  
  172.            Ctrl_f1         = $5E00;
  173.            Ctrl_f2         = $5F00;
  174.            Ctrl_f3         = $6000;
  175.            Ctrl_f4         = $6100;
  176.            Ctrl_f5         = $6200;
  177.            Ctrl_f6         = $6300;
  178.            Ctrl_f7         = $6400;
  179.            Ctrl_f8         = $6500;
  180.            Ctrl_f9         = $6600;
  181.            Ctrl_f10        = $6700;
  182.            Ctrl_f11        = $8900;
  183.            Ctrl_f12        = $8A00;
  184.  
  185.            Alt_f1          = $6800;
  186.            Alt_f2          = $6900;
  187.            Alt_f3          = $6A00;
  188.            Alt_f4          = $6B00;
  189.            Alt_f5          = $6C00;
  190.            Alt_f6          = $6D00;
  191.            Alt_f7          = $6E00;
  192.            Alt_f8          = $6F00;
  193.            Alt_f9          = $7000;
  194.            Alt_f10         = $7100;
  195.            Alt_f11         = $8B00;
  196.            Alt_f12         = $8C00;
  197.  
  198.            Alt_a           = $1E00;
  199.            Alt_b           = $3000;
  200.            Alt_c           = $2E00;
  201.            Alt_d           = $2000;
  202.            Alt_e           = $1200;
  203.            Alt_f           = $2100;
  204.            Alt_g           = $2200;
  205.            Alt_h           = $2300;
  206.            Alt_i           = $1700;
  207.            Alt_j           = $2400;
  208.            Alt_k           = $2500;
  209.            Alt_l           = $2600;
  210.            Alt_m           = $3200;
  211.            Alt_n           = $3100;
  212.            Alt_o           = $1800;
  213.            Alt_p           = $1900;
  214.            Alt_q           = $1000;
  215.            Alt_r           = $1300;
  216.            Alt_s           = $1F00;
  217.            Alt_t           = $1400;
  218.            Alt_u           = $1600;
  219.            Alt_v           = $2F00;
  220.            Alt_w           = $1100;
  221.            Alt_x           = $2D00;
  222.            Alt_y           = $1500;
  223.            Alt_z           = $2C00;
  224.  
  225.            Ctrl_a          = $1E01;
  226.            Ctrl_b          = $3002;
  227.            Ctrl_c          = $2E03;
  228.            Ctrl_d          = $2004;
  229.            Ctrl_e          = $1205;
  230.            Ctrl_f          = $2106;
  231.            Ctrl_g          = $2207;
  232.            Ctrl_h          = $2308;
  233.            Ctrl_i          = $1709;
  234.            Ctrl_j          = $240A;
  235.            Ctrl_k          = $250B;
  236.            Ctrl_l          = $260C;
  237.            Ctrl_m          = $320D;
  238.            Ctrl_n          = $310E;
  239.            Ctrl_o          = $180F;
  240.            Ctrl_p          = $1910;
  241.            Ctrl_q          = $1011;
  242.            Ctrl_r          = $1312;
  243.            Ctrl_s          = $1F13;
  244.            Ctrl_t          = $1414;
  245.            Ctrl_u          = $1615;
  246.            Ctrl_v          = $2F16;
  247.            Ctrl_w          = $1117;
  248.            Ctrl_x          = $2D18;
  249.            Ctrl_y          = $1519;
  250.            Ctrl_z          = $2C1A;
  251.  
  252.  
  253.            Key_a           = $1E61;
  254.            Key_b           = $3062;
  255.            Key_c           = $2E63;
  256.            Key_d           = $2064;
  257.            Key_e           = $1265;
  258.            Key_f           = $2166;
  259.            Key_g           = $2267;
  260.            Key_h           = $2368;
  261.            Key_i           = $1769;
  262.            Key_j           = $246A;
  263.            Key_k           = $256B;
  264.            Key_l           = $266C;
  265.            Key_m           = $326D;
  266.            Key_n           = $316E;
  267.            Key_o           = $186F;
  268.            Key_p           = $1970;
  269.            Key_q           = $1071;
  270.            Key_r           = $1372;
  271.            Key_s           = $1F73;
  272.            Key_t           = $1474;
  273.            Key_u           = $1675;
  274.            Key_v           = $2F76;
  275.            Key_w           = $1177;
  276.            Key_x           = $2D78;
  277.            Key_y           = $1579;
  278.            Key_z           = $2C7A;
  279.  
  280.            Key_0           = $0B30;
  281.            Key_1           = $0231;
  282.            Key_2           = $0332;
  283.            Key_3           = $0433;
  284.            Key_4           = $0534;
  285.            Key_5           = $0635;
  286.            Key_6           = $0736;
  287.            Key_7           = $0837;
  288.            Key_8           = $0938;
  289.            Key_9           = $0A39;
  290.  
  291.  
  292.            Shift_Key_a     = $1E41;
  293.            Shift_Key_b     = $3042;
  294.            Shift_Key_c     = $2E43;
  295.            Shift_Key_d     = $2044;
  296.            Shift_Key_e     = $1245;
  297.            Shift_Key_f     = $2146;
  298.            Shift_Key_g     = $2247;
  299.            Shift_Key_h     = $2348;
  300.            Shift_Key_i     = $1749;
  301.            Shift_Key_j     = $244A;
  302.            Shift_Key_k     = $254B;
  303.            Shift_Key_l     = $264C;
  304.            Shift_Key_m     = $324D;
  305.            Shift_Key_n     = $314E;
  306.            Shift_Key_o     = $184F;
  307.            Shift_Key_p     = $1950;
  308.            Shift_Key_q     = $1051;
  309.            Shift_Key_r     = $1352;
  310.            Shift_Key_s     = $1F53;
  311.            Shift_Key_t     = $1454;
  312.            Shift_Key_u     = $1655;
  313.            Shift_Key_v     = $2F56;
  314.            Shift_Key_w     = $1157;
  315.            Shift_Key_x     = $2D58;
  316.            Shift_Key_y     = $1559;
  317.            Shift_Key_z     = $2C5A;
  318.  
  319.            Shift_Key_0     = $0B29;
  320.            Shift_Key_1     = $0221;
  321.            Shift_Key_2     = $0340;
  322.            Shift_Key_3     = $0423;
  323.            Shift_Key_4     = $0524;
  324.            Shift_Key_5     = $0625;
  325.            Shift_Key_6     = $075E;
  326.            Shift_Key_7     = $0826;
  327.            Shift_Key_8     = $092A;
  328.            Shift_Key_9     = $0A28;
  329.  
  330.            No_Key_At_all   = $FFFF;
  331.            No_Key          = $FFFE;
  332.            Ctrl_Break      = $0000;
  333.  
  334.  
  335.  function  Readkey:char;
  336.  function  keypressed:boolean;
  337.  
  338.  function  Extended_Keypressed:boolean;
  339.  function  Extended_Readkey:word;
  340.  procedure Extended_Writekey(scan_code:word);
  341.  function  Extended_Browsekey:word;
  342.  procedure Flush_That_Key;
  343.  
  344.  function  Ctrl_Break_pressed:boolean;
  345.  procedure Clear_Ctrl_Break;
  346.  
  347.  function  get_shift_status:word;
  348.  function  shift_status_is(mask:word):boolean;
  349.  function  Get_char(w:word):char;
  350.  
  351.  
  352.  Var Touche_Residuelle:byte;
  353.      Last_key:word;
  354.  
  355.  
  356.  implementation
  357.  
  358.  (*===========*)
  359.  function  Get_char(w:word):char; assembler;
  360.   asm
  361.    mov ax,w
  362.   end;
  363.  
  364.  (*===========*)
  365.  function  Readkey:char; assembler;
  366.   asm
  367.    mov al,Touche_residuelle
  368.    or  al,al
  369.    jz  @ici
  370.    mov touche_residuelle,0
  371.    jmp @exit
  372.    @ici:
  373.    mov ah,$10
  374.    int $16
  375.    mov last_key,ax
  376.    or  al,al
  377.    jnz @exit
  378.    mov Touche_residuelle,ah
  379.    @exit:
  380.   end;
  381.  
  382.  
  383.  (*===========*)
  384.  function  keypressed:boolean; assembler;
  385.   asm
  386.    mov ah,$11
  387.    int $16
  388.    mov al,0
  389.    jz  @exit
  390.    mov al,1
  391.    @exit:
  392.   end;
  393.  
  394.  
  395.  (*===========*)
  396.  function get_shift_status:word; assembler;
  397.   asm
  398.    xor ax,ax
  399.    mov es,ax
  400.    mov ax,es:[$417]
  401.   end;
  402.  
  403.  (*===========*)
  404.  function  shift_status_is(mask:word):boolean; assembler;
  405.   asm
  406.    xor ax,ax
  407.    mov es,ax
  408.    mov ax,es:[$417]
  409.    and ax,mask
  410.    jz  @exit
  411.    mov al,1
  412.    @exit:
  413.   end;
  414.  
  415.  
  416.  (*===========*)
  417.  procedure Clear_Ctrl_Break; assembler;
  418.   asm
  419.    xor ax,ax
  420.    mov es,ax
  421.    mov byte ptr es:[$471],0
  422.   end;
  423.  
  424.  
  425.  (*===========*)
  426.  function Ctrl_Break_pressed:boolean; assembler;
  427.   asm
  428.    xor ax,ax
  429.    mov es,ax
  430.    mov al,es:[$471]
  431.    shr al,7
  432.   end;
  433.  
  434.  
  435.  (*===========*)
  436.  function extended_keypressed:boolean; assembler;
  437.   asm
  438.    mov ah,$11
  439.    int $16
  440.    lahf
  441.    and ah,$4
  442.    not ah
  443.    mov al,ah
  444.   end;
  445.  
  446.  (*===========*)
  447.  function  Extended_Browsekey:word; assembler;
  448.   asm
  449.    mov ah,$11;
  450.    int $16
  451.    jnz @exit
  452.    xor ax,ax
  453.    @exit:
  454.   end;
  455.  
  456.  (*===========*)
  457.  function extended_readkey:word; assembler;
  458.   asm
  459.    mov ah,$10
  460.    int $16
  461.    mov last_key,ax
  462.   end;
  463.  
  464.  (*===========*)
  465.  procedure flush_that_key; assembler;
  466.   asm
  467.    mov ah,$10
  468.    int $16
  469.   end;
  470.  
  471.  (*===========*)
  472.  procedure extended_writekey(scan_code:word); assembler;
  473.   asm
  474.    mov ah,5
  475.    mov cx,scan_code
  476.    int $16
  477.   end;
  478.  
  479.  
  480.  
  481.  begin
  482.   Touche_residuelle:=0;
  483.   Last_key:=no_key_at_all;
  484.   Clear_Ctrl_Break;
  485.  end.
  486.  
  487.